<?php
/*
 * @Descripttion:
 * @version:
 * @Author: ewgof
 * @Date: 2020-09-19 23:11:21
 * @LastEditors: ewgof
 * @LastEditTime: 2020-10-25 17:00:56
 */
namespace cw\interfaces;

interface CacheInterface
{
    // 获取缓存值
    public function get(String $name);

    // 设置缓存值
    public function set(String $name, $val, $expire = null);
    

    /**
     * @name: inc
     * @msg: 缓存值自增
     * @param string $name 缓存键名
     * @param integer $step 自增步长，默认为1
     * @return boolean
     */
    public function inc(String $name, $step = 1);



    /**
     * @name: dec
     * @msg: 缓存值自减
     * @param string $name 缓存键名
     * @param integer $step 自减步长，默认为1
     * @return boolean
     */
    public function dec(String $name, $step = 1);


    /**
     * @name: delete
     * @msg: 删除缓存值
     * @param string $name 缓存键名
     * @return boolean
     */
    public function delete(String $name);



    /**
     * @name: pull
     * @msg: 获取并删除缓存值
     * @param string $name 缓存键名
     * @return mixed
     */
    public function pull(String $name);



    /**
     * @name: clean
     * @msg: 清除当前用户的全部缓存值
     * @param boolean $delfile 清除缓存数据的同时是否删除文件，只有使用文件驱动时，此参数有效
     * @return boolean
     */
    public function clean();



    /**
     * @name: has
     * @msg: 判断缓存值是否存在
     * @param string $name 缓存键名
     * @return boolean
     */
    public function has(String $name);




    /**
     * @name: setValues
     * @msg: 批量设置缓存值
     * @param array $data 要设置的缓存数据，键值对形式的一位数组
     * @return {type}
     */
    // public function setValues(array $data, $expire = null);


    /**
     * @name:
     * @msg: 获取全部缓存数据
     * @param {type}
     * @return {type}
     */
    // public function getAll();


    /**
     * @name:
     * @msg: 原样设置缓存数据，不处理有效期和值
     * @param Array $data  缓存数据
     * @return boolean
     */
    // public function preSetValues(array $data);
}
